﻿using QuanLyThuVien.BLL;
using QuanLyThuVien.DTO;
using QuanLyThuVien.Supporter;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyThuVien.GUI
{
    public partial class GUITheLoai : DevComponents.DotNetBar.Office2007Form
    {
        private BLLTheLoai _bllTheLoai;
        private DTOTheLoai _TheLoai;
        private THAOTAC _ThaoTac;

        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public GUITheLoai()
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = THAOTAC.XEM;
            _TheLoai = new DTOTheLoai();
        }

        //----------------------------------------------------------------------
        //Desc: constructor 1 tham số
        //----------------------------------------------------------------------
        public GUITheLoai(THAOTAC thaotac)
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = thaotac;
            _TheLoai = new DTOTheLoai();
        }

        //----------------------------------------------------------------------
        //Desc: constructor 2 tham số
        //----------------------------------------------------------------------
        public GUITheLoai(THAOTAC thaotac, DTOTheLoai theloai)
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = thaotac;
            _TheLoai = theloai;
        }

        //----------------------------------------------------------------------
        //Desc: khởi tạo
        //----------------------------------------------------------------------
        public void KhoiTao()
        {
            _bllTheLoai = new BLLTheLoai();
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật giao diện
        //----------------------------------------------------------------------
        public void CapNhatGiaoDien()
        {
            switch (_ThaoTac)
            { 
                case THAOTAC.THEM:
                    this.Text = "THÊM THỂ LOẠI";
                    _btnThemMoi.Visible = true;
                    _btnThem.Visible = true;
                    _btnSua.Visible = false;

                    _txtTenTL.ReadOnly = false;
                    break;
                case THAOTAC.SUA:
                    this.Text = "CẬP NHẬT THỂ LOẠI";
                    _btnThemMoi.Visible = true;
                    _btnThem.Visible = false;
                    _btnSua.Visible = true;

                    _txtTenTL.ReadOnly = false;
                    break;
                case THAOTAC.XEM:
                    this.Text = "THÔNG TIN THỂ LOẠI";
                    _btnThemMoi.Visible = false;
                    _btnThem.Visible = false;
                    _btnSua.Visible = false;

                    _txtTenTL.ReadOnly = true;
                    break;
            }
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật nội dung
        //----------------------------------------------------------------------
        public void CapNhatNoiDung()
        {
            switch (_ThaoTac)
            { 
                case THAOTAC.THEM:
                    break;
                default:
                    HienThiThongTinTL();
                    break;
            }
        }

        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin thể loại
        //----------------------------------------------------------------------
        public void HienThiThongTinTL()
        {
            _txtMaTL.Text = _TheLoai.MaTheLoai;
            _txtTenTL.Text = _TheLoai.TenTheLoai;
        }

        //----------------------------------------------------------------------
        //Desc: xóa tất cả thông tin hiển thị
        //----------------------------------------------------------------------
        public void XoaTatCa()
        {
            _TheLoai.Reset();
            _txtMaTL.Text = "";
            _txtTenTL.Text = "";
        }

        //----------------------------------------------------------------------
        //Desc: lấy dữ liệu
        //----------------------------------------------------------------------
        public DTOTheLoai LayDuLieuForm()
        {
            if (_txtTenTL.Text == "")
            {
                MessageBox.Show("Chưa nhập tên tác giả giả");
                return null;
            }

            return new DTOTheLoai(_txtTenTL.Text);
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThemMoi
        //----------------------------------------------------------------------
        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            XoaTatCa();
            _ThaoTac = THAOTAC.THEM;
            CapNhatGiaoDien();
            CapNhatNoiDung();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Them
        //----------------------------------------------------------------------
        private void btnThem_Click(object sender, EventArgs e)
        {
            DTOTheLoai theloai = LayDuLieuForm();
            if (theloai != null)
            {
                if (!_bllTheLoai.PhatSinhMaTheLoai(ref theloai))
                    MessageBox.Show("Không tạo được mã thể loại");
                else
                {
                    if (_bllTheLoai.CapNhat(theloai))
                    {
                        MessageBox.Show("Thêm thành công");
                        _ThaoTac = THAOTAC.SUA;
                        _TheLoai = theloai;
                        CapNhatGiaoDien();
                        CapNhatNoiDung();
                    }
                    else
                        MessageBox.Show("Thêm thất bại");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Sua
        //----------------------------------------------------------------------
        private void btnSua_Click(object sender, EventArgs e)
        {
            DTOTheLoai theloai = LayDuLieuForm();
            if (theloai.TenTheLoai == _TheLoai.TenTheLoai)
                MessageBox.Show("Chưa thay đổi thông tin thể loại");
            else
            {
                theloai.MaTheLoai = _TheLoai.MaTheLoai;
                if (_bllTheLoai.CapNhat(theloai))
                {
                    MessageBox.Show("Cập nhật thành công");
                    _TheLoai.TenTheLoai = theloai.TenTheLoai;
                    CapNhatNoiDung();
                }
                else
                    MessageBox.Show("Cập nhật thất bại");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void GUITheLoai_Load(object sender, EventArgs e)
        {
            CapNhatGiaoDien();
            CapNhatNoiDung();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện key press
        //----------------------------------------------------------------------
        private void Special_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Utils.IsSpecialKey(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
        }
    }
}
